package com.alangeorge.minermonitor;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.NavUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;

/**
 * An activity representing a single Miner detail screen. This
 * activity is only used on handset devices. On tablet-size devices,
 * item details are presented side-by-side with a list of items
 * in a {@link MinerListActivity}.
 * <p>
 * This activity is mostly just a 'shell' activity containing nothing
 * more than a {@link MinerDetailFragment}.
 */
public class MinerDetailActivity extends FragmentActivity {
	
	private String minerId = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
		Log.d(this.getClass().getSimpleName(), "onCreate(" + savedInstanceState + ")");
        setContentView(R.layout.activity_miner_detail);

        // Show the Up button in the action bar.
        getActionBar().setDisplayHomeAsUpEnabled(true);

        // savedInstanceState is non-null when there is fragment state
        // saved from previous configurations of this activity
        // (e.g. when rotating the screen from portrait to landscape).
        // In this case, the fragment will automatically be re-added
        // to its container so we don't need to manually add it.
        // For more information, see the Fragments API guide at:
        //
        // http://developer.android.com/guide/components/fragments.html
        //
        if (savedInstanceState == null) {
            // Create the detail fragment and add it to the activity
            // using a fragment transaction.
        	
        	minerId = getIntent().getStringExtra(MinerDetailFragment.ARG_ITEM_ID);
        	
            Bundle arguments = new Bundle();
            arguments.putString(MinerDetailFragment.ARG_ITEM_ID, minerId);
            MinerDetailFragment fragment = new MinerDetailFragment();
            fragment.setArguments(arguments);
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.miner_detail_container, fragment)
                    .commit();
        }
    }

	@Override
	public boolean onCreatePanelMenu(int arg0, Menu menu) {
		   MenuInflater inflater = getMenuInflater();
		   inflater.inflate(R.menu.detail_actionbar_menu, menu);

		   return true;
	}
	
	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		   switch (item.getItemId()) {
	        case R.id.deleteminer:
	        	MinerList.removeMiner(minerId);
                NavUtils.navigateUpTo(this, new Intent(this, MinerListActivity.class));
	            return true;
	        default:
	            return onOptionsItemSelected(item);
	    }
	}
	
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
		Log.d(this.getClass().getSimpleName(), "onOptionsItemSelected(" + item + ")");
        switch (item.getItemId()) {
            case android.R.id.home:
                // This ID represents the Home or Up button. In the case of this
                // activity, the Up button is shown. Use NavUtils to allow users
                // to navigate up one level in the application structure. For
                // more details, see the Navigation pattern on Android Design:
                //
                // http://developer.android.com/design/patterns/navigation.html#up-vs-back
                //
                NavUtils.navigateUpTo(this, new Intent(this, MinerListActivity.class));
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

	@Override
	public void onAttachFragment(Fragment fragment) {
		Log.d(this.getClass().getSimpleName(), "onAttacheFragment(" + fragment + ")");
		super.onAttachFragment(fragment);
	}

	@Override
	public View onCreateView(String name, Context context, AttributeSet attrs) {
//		Log.d(this.getClass().getSimpleName(), "onCreateView(" + name + ", " + context + ", " + attrs + ")");
		return super.onCreateView(name, context, attrs);
	}

	@Override
	protected void onDestroy() {
		Log.d(this.getClass().getSimpleName(), "onDistroy()");
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		Log.d(this.getClass().getSimpleName(), "onPause()");
		super.onPause();
	}

	@Override
	protected void onResume() {
		Log.d(this.getClass().getSimpleName(), "onResume()");
		super.onResume();
	}

	@Override
	protected void onResumeFragments() {
		Log.d(this.getClass().getSimpleName(), "onResumeFragments()");
		super.onResumeFragments();
	}

	@Override
	protected void onStart() {
		Log.d(this.getClass().getSimpleName(), "onStart()");
		super.onStart();
	}

	@Override
	protected void onStop() {
		Log.d(this.getClass().getSimpleName(), "onStop()");
		super.onStop();
	}
}
